#include <Python.h>

#include <cstdio>

// 1. 全局对象
struct Tracer
{
    Tracer() { printf("静态初始化：构造函数运行\n"); }
    ~Tracer() { printf("动态卸载：析构函数运行\n"); }
};

// 2. 定义一个全局实例 → 触发静态初始化
Tracer g_tracer;

// 3. 为了让 .so 能被 Python import，再给一个空模块入口
extern "C" PyObject* PyInit_demo(void)
{
    static struct PyModuleDef def = {PyModuleDef_HEAD_INIT, "demo", NULL, -1, NULL};
    return PyModule_Create(&def);
}

/**
# 1. 编译成共享库
g++ -shared -fPIC -std=c++11 demo.cpp -o demo.so $(python3 -m pybind11 --includes)

# 2. 直接 Python 里 import
python3 -c "import demo; print('Python 代码开始执行')"
 *
 */